package easy

import (
	"strings"
	"unicode"
)

/*
时间复杂度:O(N)
空间复杂度:O(N)

解1：API
*/

func detectCapitalUse(word string) bool {
	t := strings.ToLower(word)
	return strings.Title(t) == word || strings.ToUpper(t) == word || strings.ToLower(t) == word
}

/*
时间复杂度:O(N)
空间复杂度:O(1)

解2：1.当第一个字符为小写，且第二个字符为大写时肯定是错误的；
	2.从第二个字符开始，其他字符必须与第二个字符大小写相同，否则也是错误的

*/

func detectCapitalUse1(word string) bool {
	if len(word) >= 2 && unicode.IsLower(rune(word[0])) && unicode.IsUpper(rune(word[1])) {
		return false
	}

	for i := 2; i < len(word); i++ {
		if unicode.IsLower(rune(word[i])) != unicode.IsLower(rune(word[1])) {
			return false
		}
	}
	return true
}
